﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MIAP.Entidades
{
    /// <summary>
    /// Clase que encapsula la informacion de un archivo
    /// </summary>
    [Serializable]
    public class ArchivoInfo
    {
        /// <summary>
        /// Identificador del archivo
        /// </summary>
        public int IdentificadorArchivo { get; set; }

        /// <summary>
        /// Identificador del proyecto al que esta asociado el archivo
        /// </summary>
        public ProyectoInfo Proyecto { get; set; }
        
        /// <summary>
        /// Obtiene o establece el nombre del archivo
        /// </summary>
        public string NombreArchivo { get; set; }

        /// <summary>
        /// Obtiene la descripcion del archivo
        /// </summary>
        public string Descripcion { get; set; }

        /// <summary>
        /// obtiene el procedimiento de carga del archivo
        /// </summary>
        public string ProcedimientoCarga { get; set; }

        /// <summary>
        /// Periodo de carga del archivo
        /// </summary>
        public PeriodoInfo PeriodoCarga { get; set; }

        /// <summary>
        /// Periodo de informacion del archivo
        /// </summary>
        public PeriodoInfo PeriodoInformacion { get; set; }

        /// <summary>
        /// obtiene el esquea del archivo en formato xml
        /// </summary>
        public string EsquemaArchivoXML { get; set; }

        /// <summary>
        /// Bandera que indica si el archivo es obligatorio
        /// </summary>
        public string EsObligatorio { get; set; }

        /// <summary>
        /// Bandera que indica si el archivo esta versionado
        /// </summary>
        public string EsVersion { get; set; }

        /// <summary>
        /// si es version indica el nombre de la version
        /// </summary>
        public string NombreVersion { get; set; }

        /// <summary>
        /// Bandera que indica si el archivo tiene estatus de activo o no
        /// </summary>
        public string EstaActivo { get; set; }

        /// <summary>
        /// Fecha de crecion del archivo
        /// </summary>
        public DateTime FechaCreacion { get; set; }

        /// <summary>
        /// Fecha de actualizacion del archivo
        /// </summary>
        public DateTime FechaActualizacion { get; set; }

        /// <summary>
        /// Formato del archivo
        /// </summary>
        public FormatoArchivoInfo FormatoArchivo { get; set; }

        /// <summary>
        /// Obtiene o establece si el usuario puede cargar archivos.
        /// </summary>
        public bool PuedeCargarArchivo { get; set; }

        /// <summary>
        /// Obtiene o establece si el usuario puede autorizar la recarga de archivos.
        /// </summary>
        public bool PuedeAutorizarRecarga { get; set; }

        /// <summary>
        /// Indica si el archivo es versionable o no.
        /// </summary>
        public bool EsVersionable { get; set; }
    }
}
